package br.com.sig.cadastro.pessoas.presentation.action;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sig.business.exception.BaseException;
import br.com.sig.cadastro.endereco.business.model.entity.Endereco;
import br.com.sig.cadastro.pessoas.business.model.bo.PessoaFisicaBO;
import br.com.sig.cadastro.pessoas.business.model.embeddable.MeioDeContato;
import br.com.sig.cadastro.pessoas.business.model.entity.PessoaFisica;
import br.com.sig.cadastro.pessoas.business.service.PessoaFisicaService;
import br.com.sig.presentation.action.BaseAction;

@Named
@ViewScoped
public class PessoaFisicaAction extends BaseAction<PessoaFisica> {

	private static final long serialVersionUID = 9024232056666509731L;
	
	@Inject
	private PessoaFisicaBO pessoaFisicaBO;
	
	@Inject
	private PessoaFisicaService pessoaFisicaService;

	@PostConstruct
	public void init() {
		setService(pessoaFisicaBO);
	}
	
	@Override
	protected PessoaFisica createInstance() {
		PessoaFisica pessoaFisica = super.createInstance();
		pessoaFisica.setMeioDeContato(new MeioDeContato());
		pessoaFisica.setEnderecos(new ArrayList<Endereco>());
		return pessoaFisica;
	}
	
	@Override
	public void remove() {
		try {
			pessoaFisicaService.remove(getList().getSelections());
			afterRemove();
		} catch (BaseException e) {
			messages.error(e.getMessage());
		}		
	}
}